﻿/***************************************************************
 * 开发人员：网魂小兵@http://www.mozlite.com
 * 
 * 目标标本：4.0.30319.17020
 * 
 * 最后修改：2011/11/20 14:01:22
 * ************************************************************/
namespace Mozlite.Common
{
    using System;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;
    using Mozlite.Common.Configuration;

    /// <summary>
    /// 论坛分类。
    /// </summary>
    public class Forum : BaseObject
    {
        /// <summary>
        /// 初始化类<see cref="T:Mozlite.Common.Forum"/>。
        /// </summary>
        public Forum()
        {
            this.SettingsID = SiteSettings.Current.SettingsID;
        }

        /// <summary>
        /// 获取或设置网站设置ID。
        /// </summary>
        public int SettingsID { get; set; }

        /// <summary>
        /// 获取或设置论坛ID。
        /// </summary>
        public int ForumID { get; set; }

        /// <summary>
        /// 获取或设置论坛名称。
        /// </summary>
        public string ForumName { get; set; }

        /// <summary>
        /// 获取或设置摘要。
        /// </summary>
        public string Summary { get; set; }

        /// <summary>
        /// 获取或设置唯一键。
        /// </summary>
        public string Key { get; set; }

        /// <summary>
        /// LOGO图标。
        /// </summary>
        public string LogoUrl { get; set; }

        /// <summary>
        /// 父分类ID。
        /// </summary>
        public int ParentID { get; set; }

        /// <summary>
        /// 从数据库中加载数据。
        /// </summary>
        /// <param name="reader">数据库读取器。</param>
        protected override void Load(System.Data.IDataReader reader)
        {
            this.SettingsID = reader.TGet<int>("SettingsID");
            this.ForumID = reader.TGet<int>("ForumID");
            this.ParentID = reader.TGet<int>("ParentID");
            this.ForumName = reader.TGet<string>("ForumName");
            this.Summary = reader.TGet<string>("Summary");
            this.Key = reader.TGet<string>("Key");
            this.LogoUrl = reader.TGet<string>("LogoUrl");
            this.CreateDate = reader.TGet<DateTime>("CreateDate");
            this.SchemaID = reader.TGet<Guid>("SchemaID");
            this.IsVisiable = reader.TGet<bool>("IsVisiable");
        }

        /// <summary>
        /// 创建时间。
        /// </summary>
        public DateTime CreateDate { get; set; }

        /// <summary>
        /// 判断是否显示。
        /// </summary>
        public bool IsVisiable { get; set; }

        /// <summary>
        /// 权限方案ID。
        /// </summary>
        public Guid SchemaID { get; set; }

        /// <summary>
        /// 获取或设置当前论坛模板。
        /// </summary>
        public string Theme { get { return Get<string>("Theme", DiscussApplication.Current.Configuration.DefaultTheme); } set { Set("Theme", value); } }

        private Forum parentForum;
        /// <summary>
        /// 父论坛。
        /// </summary>
        public Forum Parent
        {
            get {
                if (parentForum == null && ParentID != 0)
                    parentForum = Forums.GetForumFromCache(this.ForumID);
                return parentForum;
            }
        }

        private List<Forum> children;
        /// <summary>
        /// 子论坛。
        /// </summary>
        public List<Forum> Children {
            get {
                if (children == null)
                    children = (from forum in Forums.LoadForums().Values
                                where forum.ParentID == this.ForumID
                                select forum).ToList<Forum>();
                return children;
            }
        }
    }
}